//
//  StatusListViewModel.swift
//  微博三天
//
//  Created by jessica on 15/11/17.
//  Copyright © 2015年 jessica. All rights reserved.
//

import UIKit

import AFNetworking
import SVProgressHUD
import SDWebImage

class StatusListViewModel: NSObject {

    class func loadData(since_id since_id: Int,max_id: Int,finished: (array: [Status]?) -> ()) {

        
        //实例化AFN
//        let AFN = AFHTTPSessionManager()
    
    //线上+前缀,保留前缀即可
        let urlString = "2/statuses/home_timeline.json"
        
        guard let token = userAccountViewModel().token else{
            
            SVProgressHUD.showErrorWithStatus("你还没有登录呢?")
            return
            
        }
    
        var paraments = ["access_token" : token]

    //若指定此参数，则返回ID比since_id大的微博（即比since_id时间晚的微博），默认为0。
    if since_id > 0 {
        //添加since_id 对应键值
        paraments["since_id"] = "\(since_id)"
    }
    
    //	若指定此参数，则返回ID小于或等于max_id的微博，默认为0。
    if max_id > 0 {
        paraments["max_id"] = "\(max_id - 1)"
    }
    
    
                                         //enum
    NetworkTools.shardTools.requestJsonDict(.GET, urlString: urlString, paraments: paraments) { (result, error) -> () in
        
        
        if error != nil {
        //错误回调
        finished(array: nil)
        return
        
    
        }
//            guard let dict = result as? [String : AnyObject] else{
//                
//                //错误的回调
//                finished(array: nil)
//                return
//            }   //双中括号:数组中的字典,强制解包!
            if let array = result!["statuses"] as?[[String : AnyObject]]{
                
                //遍历数组
                var list = [Status]()
                for item in array {
                    //字典转模型
                    let s = Status(dict: item)
                    list.append(s)
                }
//
                //完成回调
//                finished(array: list)
                StatusListViewModel.cacheStatusImage(list,finished:finished)
                
            }
            
        }
    
    }
//    //异步网络加载图片

    //      class是表示类的方法
    

    private class func cacheStatusImage(array : [Status],finished : (array : [Status]?)->()){
    
//        finished(array: array)
        finished(array: nil)
        
        if array.count == 0{
            
            finished(array: array)
        
        return
        
        }
        //创建一个组
        let group = dispatch_group_create()
        
        //遍历模型数组
        for s in array {
        
//            if let imageurls = s.imageURLs{
            if let imageurls = s.pictureurls{
            //不为1,多张图片
                if imageurls.count != 1 {
                
                continue
                }
            //为1,单张图片
                for url in imageurls {
                
                //向群组添加异步任务
//    进
                    dispatch_group_enter(group)
                    SDWebImageManager.sharedManager().downloadImageWithURL(url, options: [], progress: nil, completed: { (_, _, _, _, _) -> Void in
                        print("@#$@#$@#$@#$@#单张网络加载图片成功@@#@#@@#@#@#")
                        
                        //   出
                        dispatch_group_leave(group)
                    })

                }
            }
        }
        
        dispatch_group_notify(group, dispatch_get_main_queue()) { () -> Void in
            
            print("多张图片加载完成了 ~oo~ ")
            finished(array: array)
        }
    }
}


